import * as types from "./mutation-types";

export default {
  increment(state) {
    state.counter++;
  },
  decrement(state) {
    state.counter--;
  },
  incrementCount(state, count) {
    state.counter += count;
  },
  incrementCountSpecial(state, payload) {
    state.counter = payload.count;
  },
  addStudent(state, payload) {
    state.students.push(payload);
  },
  // mutation常量类型
  [types.UPDATE_INFO](state) {
    // Vuex的store中的state是响应式的，当state中的数据发生改变时，Vue组件会自动更新，前提是要遵守一些Vuex对应的规则
    // 1.提前在store中初始化好所需的属性
    // 2.当给state中的对象添加新属性时，使用两种方式[方式一：使用Vue.set(obj, newProp, value) 方式二：用新对象给旧对象重新赋值]


    // 非响应式
    // delete state.info.age;
    // state.info['address'] = "陕西西安";


    // 响应式
    // state.info.name = "zhangsan";
    // Vue.delete(state.info, 'age');
    // Vue.set(state.info, 'address', '陕西西安');
    // ES6中对象的扩展运算符(...)，用于取出对象中所有可遍历的属性，然后拷贝到当前对象之中
    state.info = {...state.info, address: '陕西西安'};
  }
}
